//////////////////////////////////////////////////////////////////////////
//
// Struct where we define the main components of our scene like
// - Matrices
// - Lights and Materials
// - Geometry
// - Constant Buffers
//
//////////////////////////////////////////////////////////////////////////

#pragma once

#include <DirectXMath.h>

#include "utils/BufferData.h"
#include "utils/Lights.h"
#include <HLSL/Buffers.h>

struct Scene {
    DirectionalLight mLight;

    Material mQuadMaterial;

    BufferData<VSImmutable> mVSImmutable;
    BufferData<VSPerFrameBuffer> mVSPerFrameBuffer;

    BufferData<PSPerFrameBuffer> mPsPerFrameBuffer;

    // Define transformations from local spaces to world space.
    DirectX::XMFLOAT3A mQuadCenterPosW;
    DirectX::XMFLOAT3A mQuadVelW;
    DirectX::XMFLOAT4X4A mTexW;

	void init();
	void draw();
	void destroy();
	void updateInstanceBuffers();
};


